package com.zmn.oms.model.vo.work.detail;

import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import com.zmn.oms.model.entity.discount.OrderPayDiscount;
import com.zmn.oms.model.entity.log.OrderLog;
import com.zmn.oms.model.vo.changerecord.ZsOrderChangeRecordVO;
import com.zmn.oms.model.vo.log.OrderChannelDockingLogVO;
import com.zmn.oms.model.vo.member.OrderMemberReviewVO;
import com.zmn.oms.model.vo.warning.ZsWarningVO;
import com.zmn.oms.model.vo.work.attachmen.OrderWorkAttachmentDetailVO;
import com.zmn.oms.model.vo.work.modify.OrderPostVO;
import lombok.Data;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 类描述：啄木鸟运营工单详情页面
 *
 * @author lujia
 * @date 2018/12/03 16:47
 */
@Data
public class ZsOrderWorkDetailVO {

    /**
     * 源单号
     */
    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long originalId;

    /**
     * 工单号
     */
    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long orderId;

    /**
     * 工单号
     */
    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long code;

    /**
     * 下单平台
     */
    private Integer plat;

    /**i
     * 下单平台名称
     */
    private String platName;

    /**
     * 服务平台标志：1.言而有信 2.啄木鸟
     */
    private Integer platWork;

    /**
     * 服务平台名称
     */
    private String platWorkName;

    /**
     * 一口价标识
     */
    private Integer finalPrice;

    /**
     * 状态名称
     */
    private String statusName;

    /**
     * 结果状态名称
     */
    private String resultStatusName;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 来源类型
     */
    private String sourceType;

    /**
     * 来源类型名称
     */
    private String sourceTypeName;

    /**
     * 结果
     */
    private Integer resultStatus;

    /**
     * 订单类型：1 新单、2 返修单、3 退款单
     */
    private Integer type;

    /**
     * 工单类型名称
     */
    private String typeName;

    /**
     * 公司收款类型
     */
    private String balancePaymentLimitName;

    /**
     * 返修单ID
     */
    private Long reworkId;

    /**
     * 退款单ID
     */
    private Long refundWorkId;

    /**
     * 重复的原单ID
     */
    private Long duplicateId;

    /**
     * 服务分类id
     */
    private Integer servCategId;

    /**
     * 服务分类名称
     */
    private String servCategName;

    /**
     * 前台服务分类名称
     */
    private String showServCategName;

    /**
     * 产品
     */
    private List<ZsOrderWorkDetailProductVO> productList;

    /**
     * 产品服务列表
     */
    private List<ZsOrderWorkDetailProductVO> serviceItemList;

    /**
     * 录音
     */
    private String soundSrc;

    /**
     * 常见备注
     */
    private String commonRemark;

    /**
     * 下单备注
     */
    private String remark;

    /**
     * 客户联系信息
     */
    private ZsOrderWorkDetailContactVO contactVO;

    /**
     * 疫情管控级别
     */
    private Integer epidemicControlLevel;

    /**
     * 疫情管控信息
     */
    private String epidemicControlMsg;

    /**
     * 用户Id
     */
    private Long userId;

    /**
     * 下单用户性别
     */
    private ZsOrderWorkDetailUserInfoVO userInfoVO;

    /**
     * 三级组织id
     */
    private Integer orgThreeId;

    /**
     * 子公司名称
     */
    private String companyName;

    /**
     * 公司ID
     */
    private Integer companyId;

    /**
     * 服务公司ID
     */
    private Integer manageCompanyId;

    /**
     * 服务公司名称
     */
    private String manageCompanyName;

    /**
     * 客服电话
     */
    private String servicePhone;

    /**
     * 预约时间
     */
    private Date dutyTime;

    /**
     * 预约失败/挂起原因
     */
    private String dutyFailContent;

    /**
     * 预约状态
     */
    private Integer dutyStatus;

    /**
     * 下次联系时间
     */
    private Date nextContactTime;

    /**
     * 挂起时间
     */
    private Date suspendTime;

    /**
     * 下单
     */
    private Date receiveTime;

    /**
     * 渠道可结算的时间
     */
    private Date channelStatementCanTime;

    /**
     * 来源 二级渠道名称
     */
    private String channelTwoName;

    /**
     * 二级渠道Id
     */
    private Integer channelTwoId;

    /**
     * 推广品牌
     */
    private String promotionBrand;

    /**
     * 渠道Id
     */
    private Integer channelId;

    /**
     * 来源
     */
    private String channelName;

    /**
     * 来源渠道Id
     */
    private Integer sourceChannelId;

    /**
     * 来源渠道名称
     */
    private String sourceChannelName;

    /**
     * 二级渠道Id
     */
    private Integer sourceChannelTwoId;

    /**
     * 来源 二级渠道名称
     */
    private String sourceChannelTwoName;

    /**
     * 待自动派单
     */
    private Boolean isWaitAutoDistribute;

    /**
     * 贴花照片状态
     */
    private String appliqueStatusName;

    /**
     * 工程师形象照片状态
     */
    private String masterImageStatusName;

    /**
     * 发票
     */
    private ZsOrderWorkDetailInvoiceVO invoiceVO;

    /**
     * 用户评价
     */
    private ZsOrderWorkDetailCommentVO userCommentVO;

    /**
     * 渠道评价
     */
    private ZsOrderWorkDetailCommentVO channelCommentVO;

    /**
     * 投诉
     */
    private List<ZsOrderWorkDetailComplaintVO> complaintVOList;

    /**
     * 异常
     */
    private List<ZsOrderWorkDetailAbnormalVO> abnormalVOList;

    /**
     * 贴花照片
     */
    private List<OrderWorkAttachmentDetailVO> appliqueImageAttachmentList;

    /**
     * 工程师拍照
     */
    private List<OrderWorkAttachmentDetailVO> imageAttachmentList;

    /**
     * 视频附件
     */
    private List<OrderWorkAttachmentDetailVO> videoAttachmentList;

    /**
     * 个人形象
     */
    private String masterImageSrc;

    /**
     * 工程师列表
     */
    private List<ZsOrderWorkDetailMasterVO> masterVOList;

    /**
     * 主工程师列表
     */
    private List<ZsOrderWorkDetailMasterVO> mainMasterVOList;

    /**
     * 从工程师列表
     */
    private List<ZsOrderWorkDetailMasterVO> slaveMasterVOList;

    /**
     * 原单工程师
     */
    private ZsOrderWorkDetailMasterVO reworkOriginalMaster;

    /**
     * 会员订单数据
     */
    private ZsOrderWorkDetailMemberOrderVO memberOrderVO;

    /**
     * 优惠列表
     */
    private List<ZsOrderWorkDetailDiscountVO> discountVOList;

    /**
     * 优惠总金额
     */
    private Integer discountAmount;

    /**
     * 应收总金额
     */
    private Integer totalAmount;

    /**
     * 订单金额
     */
    private Integer originalAmount;

    /**
     * 内部价
     */
    private Integer internalSettlementAmount;

    /**
     * 外部价
     */
    private Integer externalSettlementAmount;

    /**
     * 平台代收
     */
    private Integer prepayAmount;

    /**
     * 平台代收支付状态
     */
    private String prepayAmountPayStatusName;

    /**
     * 渠道预付款
     */
    private Integer channelPrepayAmount;

    /**
     * 渠道预付款支付状态
     */
    private String channelPrepayAmountPayStatusName;

    /**
     * 预付款明细
     */
    private String channelPrepayAmountDetail;

    /**
     * 优惠预付款
     */
    private Integer discountPrepayAmount;

    /**
     * 优惠预付款已退款金额
     */
    private Integer discountPrepayRefundAmount;

    /**
     * 渠道费
     */
    private Integer channelAmount;

    /**
     * 配件借款信息列表
     */
    private List<ZsOrderWorkDetailPartLoanVO> partLoanVOList;

    /**
     * 定金
     */
    private Integer depositAmount;

    /**
     * 定金支付状态
     */
    private Integer depositStatus;

    /**
     * 定金支付状态
     */
    private String depositAmountPayStatusName;

    /**
     * 定金-未支付
     */
    private Integer unDepositAmount;

    /**
     * 进度款-已支付
     */
    private Integer progressAmount;

    /**
     * 进度款-未支付
     */
    private Integer unProgressAmount;

    /**
     * 工程师收款金额
     */
    private Integer masterAmount;

    /**
     * 工程师收款金额支付状态
     */
    private String masterAmountPayStatusName;

    /**
     * 上门费用
     */
    private Integer homeAmount;

    /**
     * 退款款额
     */
    private Integer refundAmount;

    /**
     * 工单支付状态：1.未支付 2.支付中 3.部分支付 4.已支付 12.退款中 13.部分退款 14.已退款
     */
    private Integer payStatus;

    /**
     * 支付状态名称
     */
    private String payStatusName;

    /**
     * 支付信息
     */
    private List<ZsOrderWorkDetailPayVO> payList;

    /**
     * 退款信息
     */
    private List<ZsOrderWorkDetailPayVO> refundList;

    /**
     * 内采配件列表
     */
    private List<ZsOrderWorkDetailPartStatVO> inSourcingPartList;

    /**
     * 内采配件销售总金额
     */
    private Integer inSourcingAmount;

    /**
     * 内采配件成本总金额
     */
    private Integer inSourcingCostAmount;

    /**
     * 内采配件采购总金额
     */
    private Integer inSourcingPurchaseAmount;

    /**
     * 外报配件列表
     */
    private List<ZsOrderWorkDetailPartStatVO> outSourcingPartList;

    /**
     * 外报配件销售总金额
     */
    private Integer outSourcingAmount;

    /**
     * 外报配件成本总金额
     */
    private Integer outSourcingCostAmount;

    /**
     * 外报配件采购总金额
     */
    private Integer outSourcingPurchaseAmount;

    /**
     * 订单杂项费用列表
     */
    private List<ZsOrderWorkDetailPartStatVO> deliverList;

    /**
     * 订单杂项费用总金额
     */
    private Integer deliverAmount;

    /**
     * 厂商配件列表
     */
    private List<ZsOrderWorkFactoryPartVO> factoryPartList;

    /**
     * 厂商配件总金额
     */
    private Integer factoryPartAmount;

    /**
     * 配件报销总金额
     */
    private Integer partReimburseAmount;

    /**
     * 配件报销状态
     */
    private String partReimburseStatusName;

    /**
     * 跟单列表
     */
    private List<ZsOrderWorkDetailTrackVO> trackVOList;

    /**
     * 非标信息列表
     */
    private ZsOrderNonstandardVO nonstandardVO;

    /**
     * 上门列表
     */
    private List<ZsOrderWorkDetailVisitVO> visitVOList;

    /**
     * 保修项
     */
    private ZsOrderWorkDetailWarrantyVO warranty;

    /**
     * 工单log集合
     */
    private List<OrderLog> logList;

    /**
     * 工单log集合
     */
    private List<LogStatVO> logStatList;

    /**
     * 渠道对接log集合
     */
    private List<OrderChannelDockingLogVO> dockingLogList;

    /**
     * 分表值
     */
    private Integer shardingNum;

    /**
     * 警告标识VO
     */
    private ZsWarningVO warningVO;

    /**
     * 是否为会员产品单：1不是会员产品单：2是会员产品单
     */
    private Integer member;

    /**
     * 业务类型：1保外业务（C），2保内业务（F），3工程业务（B）
     */
    private Integer bizType;

    /**
     * 业务类型名称：1保外业务（C），2保内业务（F），3工程业务（B）
     */
    private String bizTypeName;

    /**
     * 厂商单
     */
    private ZsOrderWorkFactoryVO orderFactory;

    /**
     * 渠道订单ID
     */
    private String outerId;

    /**
     * 提留
     */
    private ZsOrderWorkCommissionVO commission;

    /**
     * 完成码
     */
    private String  completeCode;

    /**
     * 店铺信息
     */
    private ZsOrderShopVO orderShopVO;

    /**
     * DMS 工程师分红 map-key  10  首次工程师, 20 上次工程师
     */
    private Map<Integer, ZsOrderDmsMasterBonusVO> dmsMasterBonusMap;

    /**
     * 预约时间，派单修改记录
     */
    private ZsOrderChangeRecordVO changeRecordVO;

    /**
     * 入口名称
     */
    private String receiveEntranceName;

    /**
     * 详情显示权限
     */
    private ZsOrderWorkDetailPremissionVO premissionVO;

    /**
     * 智米订单服务类型，该字段仅当订单为智米订单时有效
     */
    private Integer zhimiServiceType;

    /**
     * 渠道规模/用途描述 (或 渠道/厂商说明)
     */
    private String channelDescription;

    /**
     * 特权工单审核信息
     */
    private OrderMemberReviewVO orderMemberReviewVO;

    /**
     * 易碎贴编码
     */
    private String electrFragileCode;

    /**
     * 增值订单id
     */
    private Integer vasOrderId;

    /**
     * 物流信息
     */
    List<OrderPostVO> orderPostVOList;

    /**
     * 厂商配件列表
     */
    private List<ZsOrderWorkFactoryPartVO> fcPartList;

    /**
     * 工程师主管ID
     */
    private Integer masterSupervisorId;

    /**
     * 工程师主管名称
     */
    private String masterSupervisorName;

    /**
     * 工程师主管手机号
     */
    private String masterSupervisorPhone;

    /**
     * 下单业务模式：1平台，自营
     */
    private Integer bizModeSource;

    /**
     * 下单业务模式名称
     */
    private String bizModeSourceName;

    /**
     * 业务模式：1平台，自营
     */
    private Integer bizMode;

    /**
     * 业务模式：1平台，自营
     */
    private String bizModeName;

    /**
     * 服务完成审核状态 1.待审核 2. 审核成功 3. 审核失败
     */
    private Integer serviceCompleteReviewStatus;

    /**
     * 服务完成审核状态
     */
    private String serviceCompleteReviewStatusName;

    /**
     * 产品分组名称
     */
    private String servProductGroupName;

    /**
     * 业务线
     */
    private Integer bizLine;

    /**
     * 业务线名称
     */
    private String bizLineName;


    /**
     * 业务线名称
     */
    private Integer haveSharingEstimate;

    /**
     * 是否存在新跟单
     */
    private boolean isExistTrack;

    /**
     * 是否存在进行中跟单
     */
    private boolean isExistOngoingTrack;

    /**
     * cms视频记录
     */
    private List<ZsOrderWorkVideoRecord> cmsVideoRecord;

    /**
     * 是否网格订单
     */
    private boolean grid;

    /**
     * 网格信息，网格名称/网格ID
     */
    private String gridInfo;

    /**
     * 小区id
     */
    private Integer communityId;

    /**
     * 小区信息
     */
    private String communityInfo;

    /**
     * 行政子公司
     */
    private String gridCompanyName;

    /**
     * 行政服务商ID（网格所属服务商）
     */
    private Integer gridManageCompanyId;

    /**
     * 行政服务商名称（网格所属服务商）
     */
    private String gridManageCompanyName;

    /**
     * 行政服务商电话（网格所属服务商）
     */
    private String gridManageCompanyServicePhone;

    /**
     * 下单渠道-运营负责人
     */
    private String abutmenterName;

    /**
     * 抢单状态
     */
    private Integer grabType;

    /**
     * 是否计价器
     * 服务项类型，目前仅支持两种类型： 1.工单服务项 2.故障服务项
     * 若值不等于2，则均作为值等于1处理
     * @see com.zmn.oms.common.constant.OrderConsts#SERVICE_ITEM_TYPE_ORDER
     * @see com.zmn.oms.common.constant.OrderConsts#SERVICE_ITEM_TYPE_FAULT
     */
    private Integer servItemType;

    /**
     * 城市id
     */
    private Integer cityId;

    /**
     * 城市id
     */
    private Integer provinceId;

    /**
     * 派单路径
     */
    private Integer distributeWay;

    /**
     * 赔偿金额
     */
    private Integer compensateAmount;

    /**
     * 邀评平台
     */
    private String inviteCommentPlat;

    /**
     * 邀评说明
     */
    private String inviteCommentExplain;

    /**
     * 尾款支付平台
     */
    private String finalPaymentPayPlat;

    /**
     * 尾款支付说明
     */
    private String finalPayExplain;

    /**
     * 责任工程师
     */
    private LiableMasterVO liableMaster;

    /**
     *  工单关系
     */
    private  OrderWorkRelationVO workRelationVO;

    /**
     * 关联订单数量
     */
    private RelationOrderWorkCountVO relationOrderWorkCountVO;

    /**
     *  支付优惠金额
     */
    private List<OrderPayDiscount> orderPayDiscountList;
}

